SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[pje_porAcumulacionDeTitulos] @idInscripcion as integer ,@pje as float output,@resultado as int  AS

set nocount on --para anular el trafico econ el cliente (no salen los print)

declare  @idAgente as int,@idCargoGenerico as int,@idAsignaturaGenerica as int, @idTipoConvocatoria as int ,@idlocalidad as int, @FechaLimite as datetime
declare @sum as float
declare @contador as int --para controlar que no sume más de dos acumulaciones para el mismo cargo
declare @cargogenerico as int, @asignaturagenerica as int, @t1 as int,@t2 as int
declare @PJEPORTITULO as int
declare @concepto as int
declare @cargoAnt as int,@AsigAnt as int

DECLARE @Error INT

BEGIN TRANSACTION
             SET @ERROR=0




select  @idAgente=i.Agente,@IdcargoGenerico = i.CargoGenerico,@IdAsignaturaGenerica=i.AsignaturaGenerica,@idtipoConvocatoria=Conv.TipoConvocatoria,@FechaLimite=Conv.FechaLimite
	from 
	tb_inscripcionesConvocatorias i 
		join tb_Convocatorias conv on i.Convocatoria=conv.idConvocatoria 
	where i.idInscripcionConvocatoria=@idInscripcion

		SET @Error = @@ERROR 
		IF @Error <> 0 GOTO Salir

-- ME FIJO  EL PUNTAJE POR TITULO YA QUE ESTE ITEM SE VALORA SOLO PARA LOS TITULOS DOCENTES O HABILITANTES CON CAPAC.
select @concepto =case @idTipoConvocatoria 
when 1 then 189
when 2 then  293
when 3 then  600
when 4 then 428
when 9 then 543
end

print 'inscripcion' + cast (@idInscripcion as varchar )
print 'concepto ' + cast (@concepto as varchar)

SELECT @PJEPORTITULO=PUNTAJE FROM TB_CALIFICACIONESDEINSCRIPCION WHERE INSCRIPCION=@idInscripcion AND CONCEPTO=@concepto

		SET @Error = @@ERROR 
		IF @Error <> 0 GOTO Salir

print 'puntaje por tit .....' + cast(isnull(@PJEPORTITULO,-1) as varchar)
set @pje=0

if   @PJEPORTITULO > 18-- TipoConvocatoria = 1  ingreso,interinatos y suplencias
begin
	--ojo categoria 12 es titulo docente Hay que revisar eso
	-- Debo revisar que Titulo1 y Titulo2 sean titulos obtenidos por el agente ya que puede ser que tenga cargada una acumulación
	-- para estudios parciales en ese caso titulo1 es un titulo y titulo2 es un estudio parcial del agente 

	set @resultado = 0
	set @sum=0
	declare c cursor FORWARD_ONLY FOR
	select distinct act.cargoGenerico,act.asignaturagenerica,Titulo1,Titulo2,isnull(v.puntaje,0) puntaje from        --selecciona las dos primeras acumulaciones de mayor puntaje
		tb_AcumulacionTitulosDelAgente  AcTA  
		join tb_AcumulacionDeTitulos AcT on AcTA.Acumulacion=AcT.idAcumulacion 
		join tb_gruposDeIncumbencias G on G.idGrupoIncumbencia=AcTA.GrupoIncumbencia
--		join tb_reluniongsgu R on r.idgrupounion = G.idGrupoIncumbencia
		join tb_incumbencias h on G.idGrupoINCUMBENCIA=h.grupoIncumbencia
		join Tb_valoresDeAcumulacion V on acT.ValorDeAcumulacion=V.IdValorAcumulacion 
		join tb_titulosDelAgente T on AcTA.Agente=T.Agente and Act.titulo2=T.titulo 
		join tb_titulosDelAgente T2 on AcTA.Agente=T2.Agente and Act.titulo1=T2.titulo
	where AcTA.agente=@idAgente and ACT.cargoGenerico=@IdCargoGenerico and ACT.asignaturaGenerica=@IdAsignaturaGenerica AND AcTA.AcumulacionEstudioParcial='A' and AcTA.FechaPresentacion <= @FechaLimite
	order by 1,2, v.puntaje desc
	SET @Error = @@ERROR 
	IF @Error <> 0 GOTO Salir

	open c
	fetch next from c into @cargogenerico, @asignaturagenerica,@t1,@t2, @sum 

	set @pje=0
	set @contador=0
	set @cargoAnt =@cargogenerico
	set @AsigAnt=@asignaturagenerica
	--print 'contador  ' + cast (@contador as varchar) +  'cargo ' +  cast (@cargogenerico as varchar) + 'asignatura  ' + cast ( @asignaturagenerica as varchar)

	while @@FETCH_STATUS = 0 and @contador < 2 and @cargogenerico = @CargoAnt and @asignaturagenerica=@AsigAnt
	begin
		set @pje=@pje+@sum
		set @contador = @contador +1
	             set @cargoAnt =@cargogenerico
		set @AsigAnt=@asignaturagenerica
		fetch next from c into @cargogenerico, @asignaturagenerica,@t1,@t2, @sum 
	end
	close c
	deallocate c
	print @pje
	set @resultado = 0
end

print 'puntaje por Acumulación de Títulos --------------------------------------------->' + cast( @pje as varchar)
Salir:
IF @Error <> 0 
	ROLLBACK TRANSACTION
ELSE 
	COMMIT TRANSACTION
GO
GRANT EXECUTE ON  [dbo].[pje_porAcumulacionDeTitulos] TO [Juntas]
GO
